<!--
 * @Author: WangGuojian 1085844536@qq.com
 * @Date: 2023-08-12 10:05:02
 * @LastEditTime: 2023-08-12 10:46:53
 * @LastEditors: WangGuojian 1085844536@qq.com
 * @FilePath: \vue-basic\13-收集表单数据\收集表单数据.html
 * @Description:
-->
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>收集表单数据</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>

    <body>
        <!--
            收集表单数据
                若 `<input type="text"/>` ，则v-model收集的是value值，用户输入的内容就是value值
                若 `<input type="radio"/>` ，则v-model收集的是value值，且要给标签配置value属性
                若 `<input type="checkbox"/>`
                    1.没有配置 `value` 属性，那么收集的是 `checked` 属性（勾选 or 未勾选，是布尔值）
                    2.配置了 `value` 属性
                        (1).`v-model` 的初始值是 **非数组** ，那么收集的就是 **checked** （勾选 or 未勾选，是布尔值）
                        (2).`v-model` 的初始值是 **数组** ，那么收集的就是 `value` 组成的数组

                备注：`v-model` 的三个修饰符
                    lazy 失去焦点后再收集数据
                    number输入字符串转为有效的数字
                    trim 输入首尾空格过滤
         -->
        <!-- 准备一个容器 -->
        <div id="root">
            <form @submit.prevent="userInfo.demo">
                账号：<input
                    type="text"
                    v-model.trim="userInfo.account"
                /><br /><br />
                密码：<input
                    type="password"
                    v-model="userInfo.password"
                /><br /><br />
                年龄：<input type="number" v-model.number="userInfo.age" />
                <br /><br />
                性别： 男<input
                    type="radio"
                    name="sex"
                    v-model="sex"
                    value="male"
                />
                <br /><br />
                女<input
                    type="radio"
                    name="sex"
                    v-model="userInfo.sex"
                    value="female"
                />
                <br /><br />
                爱好： 学习<input
                    type="checkbox"
                    v-model="userInfo.hobby"
                    value="study"
                />
                打游戏<input
                    type="checkbox"
                    v-model="userInfo.hobby"
                    value="game"
                />
                吃饭<input
                    type="checkbox"
                    v-model="userInfo.hobby"
                    value="eat"
                />
                <br /><br />
                所属校区
                <select v-model="userInfo.city">
                    <option value="">请选择校区</option>
                    <option value="beijing">北京</option>
                    <option value="shanghai">上海</option>
                    <option value="shenzhen">深圳</option>
                    <option value="wuhan">武汉</option>
                </select>
                <br /><br />
                其他信息
                <textarea v-model.lazy="userInfo.other"></textarea><br /><br />
                <input type="checkbox" v-model="userInfo.agree" />阅读并接受<a
                    href="http://www.atguigu.com"
                    >《用户协议》</a
                >
                <button>提交</button>
            </form>
        </div>
    </body>

    <script type="text/javascript">
        Vue.config.productionTip = false;

        new Vue({
            el: '#root',
            data: {
                userInfo: {
                    account: '',
                    password: '',
                    age: '',
                    sex: 'female',
                    hobby: [],
                    city: 'beijing',
                    other: '',
                    agree: '',
                },
            },
            methods: {
                demo() {
                    console.log(JSON.stringify(this._data));
                },
            },
        });
    </script>
</html>
